package com.whfc.emp.service;


import com.whfc.common.exception.BizException;
import com.whfc.emp.dto.AppEmpConfigDTO;
import com.whfc.emp.dto.AppEmpSettingDTO;
import com.whfc.emp.dto.EmpValidFenceDTO;
import com.whfc.emp.entity.AppSyncRealNameConfig;
import com.whfc.emp.enums.AttendType;
import com.whfc.emp.param.AppEmpSettingAddParam;

import java.util.List;

/**
 * @ClasssName AppEmpConfigService
 * @Description 人员配置项服务
 * @Author hw
 * @Date 2020/12/16 17:32
 * @Version 1.0
 */
public interface AppEmpConfigService {

    /**
     * 获取考勤方式
     *
     * @param deptId
     * @return
     */
    AttendType getAttendType(Integer deptId) throws BizException;


    /**
     * 设置考勤方式
     *
     * @param deptId
     * @param attendType
     */
    void setAttendType(Integer deptId, AttendType attendType) throws BizException;

    /**
     * 项目是否需要开启人脸识别
     *
     * @param deptId
     * @return
     */
    boolean isIdCardVerify(Integer deptId) throws BizException;

    /**
     * 查询项目的人员配置
     *
     * @param deptId
     * @return
     */
    AppEmpSettingDTO getSetting(Integer deptId) throws BizException;

    /**
     * 添加人员实名制设置
     *
     * @param request
     */
    void settingAdd(AppEmpSettingAddParam request) throws BizException;

    /**
     * 下载考勤二维码
     *
     * @param deptId
     * @param qrPath
     * @return
     */
    void saveQr(Integer deptId, String qrPath, String empConstant) throws BizException;


    /**
     * 验证考勤二维码是否启用
     *
     * @param deptId
     * @return
     */
    boolean checkQr(Integer deptId, String empConstant) throws BizException;

    /**
     * 查找有效电子围栏列表
     *
     * @param deptId 组织机构ID
     * @return 有效电子围栏列表
     * @throws BizException 业务异常
     */
    List<EmpValidFenceDTO> getEmpValidFenceList(Integer deptId) throws BizException;

    /**
     * 设置有效电子围栏
     *
     * @param deptId 组织机构ID
     * @param list   电子围栏列表
     * @throws BizException 业务异常
     */
    void setEmpValidFence(Integer deptId, List<EmpValidFenceDTO> list) throws BizException;

    /**
     * 获取人员配置信息
     * @param deptId
     * @param code
     * @return
     * @throws BizException
     */
    AppEmpConfigDTO getEmpConfig(Integer deptId, String code) throws BizException;

    /**
     * 添加实名制配置
     * @param request
     * @throws BizException
     */
    void addSyncRealNameConfig(AppSyncRealNameConfig request)throws BizException;
    /**
     * 编辑实名制配置
     * @param request
     * @throws BizException
     */
    void editSyncRealNameConfig(AppSyncRealNameConfig request);
    /**
     * 删除实名制配置
     * @param request
     * @throws BizException
     */
    void delSyncRealNameConfig(AppSyncRealNameConfig request);

    List<AppSyncRealNameConfig> listSyncRealNameConfig(AppSyncRealNameConfig request);
}
